import zmq
import time
import numpy as np
# Local imports
import bluesky as bs
from bluesky import stack
from bluesky.tools import areafilter
from bluesky.core.walltime import Timer
import zmq
import time
import sys

context = zmq.Context()
#请注意，这里为了接收经纬度信息，打开了两个socket（苏雨）
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5555")
#接收所有消息并用utf-8转码（苏雨）
socket.setsockopt(zmq.SUBSCRIBE,''.encode('utf-8'))
#定义初始化开关，如果开关置于1，则定义数组并初始化，这是为了防止先创建飞机再启动节点，导致数组未定义的错误！（苏雨） 
global init
init = 1 
#定义经纬度开关，如果为0则开关处于中间，如果为1则数据进入lat，如果为2则数据进入lon（苏雨）
global latlon
latlon = 0
while True:
    #如果第一次执行程序，则定义数组并初始化（苏雨）
    if init == 1:
        lat = []
        lon = []
        #初始化完成关闭初始化开关（苏雨）
        init = 0
    #response = socket.recv();
    response = socket.recv().decode('utf-8')
    #通过转义符区分每个采样周期所有飞机位置信息（苏雨）    
    if response == '"Position"':
        print('Aircraft Position:')
        #在这里数组获得了所有飞机的参数（苏雨）
        print(lat)
        print(lon)
        #初始化数组，用来存储采样周期内所有飞机位置信息（苏雨）
        lat = []
        lon = []
        latlon = 0    
    else:
        if response == '"Lat"':
            latlon = 1
        elif response == '"Lon"':    
            latlon = 2
        else:                     
            if latlon == 1:
                #将字符串类型转换为浮点数（苏雨）
                transfer = float(response)   
                #向数组末尾插信息（苏雨）
                lat.append(transfer)
                latlon = 0            
            if latlon == 2:
                #将字符串类型转换为浮点数（苏雨）
                transfer = float(response)   
                #向数组末尾插信息（苏雨）
                lon.append(transfer)
                latlon = 0            
        
        

       

    
    
